const numbers = [1, 2, 3, 4, 5];

// 错误示例
let sum2: any = 0;
// for in遍历数组
for (const num in numbers) {
  sum2 += num;
}

// 依赖已有数组创建新数组时，通过for遍历，生成一个新数组
const increasedByOne: any[] = [];
for (let i = 0; i < numbers.length; i++) {
  increasedByOne.push(numbers[i] + 1);
}

// 正确示例
// 使用for of遍历求和
let sum3 = 0;
for (const num of numbers) {
  sum3 += num;
}

// 使用forEach遍历求和
let sum4 = 0;
numbers.forEach((num) => (sum4 += num));

// better 使用reduce实现求和
const sum = numbers.reduce((total, num) => total + num, 0);

// 依赖已有数组创建新数组时，使用forEach遍历生成一个新数组
const increasedByOne2: any[] = [];
numbers.forEach((num) => increasedByOne2.push(num + 1));

// better 使用map方法是更好的方式
const increasedByOne3 = numbers.map((num) => num + 1);
